草庐IT

ML 方法

全部标签

C# 动态方法 - IL 与表达式树

我正在玩和学习ANTLR,为.NET构建一个简单的DSL,将字符串中的脚本转换为动态方法。我的第一个想法是翻译成IL操作码,但现在我正在阅读有关DM创建的表达式树。似乎我可以使用表达式树生成任何方法,就像IL代码一样?谢谢!代码:https://github.com/ricardoborges/NPortugol2 最佳答案 ILCode为您提供更多功能。例如,您可以使用它发出适用于.NETCLR的代码,但不一定是您可以用C#或VB.NET编写的代码。但总的来说是的,你应该能够用表达式树做任何你想做的事情,而且它们更容易理解。发出I

c# - 将 IEnumerable<T> 转换为用户类型的更好方法

我有一个自定义集合类型,定义如下:publicabstractclassRigCollectionBase:Collection,IEnumerable,INotifyPropertyChanged,IBindingList,ICancelAddNewwhereT:BusinessObjectBase,new()注意:这是基类,有20个左右的子类是这样实现的:publicclassMyCollection:RigCollectionBase我们在代码中使用了很多Linq,您可能知道,Linq函数返回IEnumerable.我正在寻找的是返回到MyCollection的简单方法。来自IE

c# - List<T>.Enumerator 的 Reset 方法的行为

以下两种方法(一种使用IEnumerator,另一种使用List.Enumerator)即使看起来相同会产生不同的结果。staticvoidM1(){varlist=newList(){1,2,3,4};IEnumeratoriterator=list.GetEnumerator();while(iterator.MoveNext()){Console.Write(iterator.Current);}iterator.Reset();while(iterator.MoveNext()){Console.Write(iterator.Current);}}staticvoidM2(){

c# - 在 MVC 5 中的 Action Filters 中调用异步方法

我正在编写一个使用ActionFilterAttribute的Action过滤器(继承自HttpClient)将数据发布到OnResultExecuted中的外部服务器方法。HttpClient有方法PostAsync它返回一个可等待的Task.publicoverridevoidOnResultExecuted(ResultExecutedContextfilterContext){using(varclient=newHttpClient()){vartask=client.PostAsync(GetUri(),GetContent());varresult=task.Result

c# - 使用 Control+Plus 的快捷方式创建 MenuItem – 使用反射修改 MenuItem 的私有(private)字段是最好的方法吗?

我正在使用旧版MainMenucontrol(withMenuItems)controlinanapplication,andwouldliketoimplementzoominandzoomoutmenuitems(withControl++和Control+-键盘快捷键)。(请注意,我使用的是MainMenu而不是MenuStrip)。MenuItem确实有一个Shortcut属性,类型Shortcut,但它没有CtrlPlus选项。我决定看看如何Shortcutwasimplementedinthereferencesource,看起来每个枚举值只是几个Keys的组合枚举值(例如

c# - 在 C# 中使用属性或方法公开业务规则?

我正在编写一个类来封装一些业务规则,每个规则都由一个bool值表示。该类将用于处理InfoPath表单,因此规则通过使用XPath操作在全局XML数据结构中查找值来获取当前程序状态。向调用者公开这些规则的最佳(最惯用)方式是什么——属性还是公共(public)方法?使用属性调用Rulesrules=newRules();if(rules.ProjectRequiresApproval){//getapproval}else{//skipapproval}使用方法调用Rulesrules=newRules();if(rules.ProjectRequiresApproval()){//g

c# - ASP.NET MVC - 带有来自 URL 的附加参数的 POST 操作方法

使用ASP.netMVC是否可以将表单POST到Controller操作,其中包含不在表单中但来自URL的参数?例如GroupController中的Action方法:[AcceptVerbs(HttpVerbs.Post)]publicActionResultCreate(intidOne,intidTwo,Modelmodel){...}路线:"{controller}/{action}/{idOne}/{idTwo}"发布网址:/Employee/Show/1/42在此示例中,表单被发布到不同的Controller,模型具有正确的值,但其他参数的默认值为0。我期望的行为是Mode

c# - 还有另一种测试枚举位域的方法吗?

将枚举与位字段一起使用时:enumReallyBigEnum{FirstChoice=0x01,AnotherOption=0x02}ReallyBigEnumflag=ReallyBigEnum.FirstChoice|ReallyBigEnum.AnotherOption;用于测试位的代码是:if((flag&ReallyBigEnum.AnotherOption)==ReallyBigEnum.AnotherOption){...}这看起来冗长且容易出错,因为需要重复该位正在测试中。如果有某种表达方式就好了:if(flag.IsSet(ReallyBigEnum.AnotherO

c# - 检测是否安装了 SQLCMD.exe 的正确方法?

我正在创建一个类库,它将.SQL文件作为输入(FileInfo)和一个连接字符串。然后它尝试对连接执行sql文件。我决定支持微软的SMO和SQLCMD.exe在测试中,我注意到在我的环境中的许多机器上,SQLCMD没有默认安装。我的程序在尝试运行进程SQLCMD.exe时出错。在不搜索整个硬盘驱动器的情况下查找它的正确方法是什么?是否有一个通用的注册表位置来指定它是否已安装?通常在安装时,我认为设置了PATH位置。非常感谢。 最佳答案 我有一台配备64位SQLSERVER(2k8R2)的64位机器,我的SQLCMD.EXE位于c:\

c# - 如何在 Entity Framework 代码优先方法中映射自身的递归关系

我想要创建的只是基本的递归类别。如果RootCategory_Id设置为null,则类别为根;如果设置为某个id,则它属于其他某个类别。我在Seed()方法中添加了带有两个子类别的类别进行测试,但它不起作用。(后来查了DB,有插入)类别模型publicclassCategory{publicintID{get;set;}publicCategoryRootCategory{get;set;}//Thisoneworksgood,italsocreates"RootCategory_Id"indatabaseon"update-database"publicICollectionChil